Aspects of the present invention are directed to computing systems and, more particularly, to middleware components of computing systems that allow for a bundling of service invocations.
Generally, a deployed computing solution that relies on a variety of remote accessible services may slow down or otherwise fail to perform properly during its normal operations. This can occur for various reasons including, but not limited to, at least a portion or a set of the remote services being actually available for only limited or sub-optimal periods of time or because the remote services are distributed at a relatively large distance from the actual application of the computing solution. Moreover, where the computing solution may already be operating relatively slowly, the already relatively slow response times of the remote services may be further delayed by additional invocations of the remote services. Such additional invocations may be issued even though it may be known that the remote services have a current high load in effect.
Presently, some of these issues have been dealt with by way of the use of Quality of Service (QoS) enabled hardware for network infrastructure. While this solution may enhance the response times of remote services, it requires an approach that is applied throughout a system. That is, if one of the hardware components in the system does not support QoS, the system will not follow defined QoS constraints once the non-supportive node is under load and, as such, the system will violate the QoS constraints. Moreover, this solution does not provide a means by which the system distinguishes between various types of requests. Thus, it may require unnecessary processing requirements for a QoS rule to take effect. Also, this approach does not consider business logic constraints and, as an example, for the building of a dataset, a specific service may be redundantly called several times in a single sequence.
In another approach, an establishment of dedicated communication channels tends to reduce the latency and load of networks. However, this approach may not prevent remote services from still being invoked even if the probability of a successful invocation is relatively very limited. Also, this approach cannot benefit from business logic data.
Alternatively, proxy infrastructure may be employed in a system. Here, a proxy solution caches previous service invocations and makes use of an analysis of the results of the previous service invocations. This approach has drawbacks, however, in that it does not cover steadily newly issued invocations and their handling. Moreover, in general, a proxy solution does not take statistics, current load factors or business logic into account.
Still other approaches include the use of a service aware network infrastructure component, the applying of QoS mechanisms to general network traffic, the use of a mechanism to refer a flow of a network to a best-fit server or the definition of routing policies based on QoS constraints. Again, however, each of these approaches has drawbacks. The service aware network infrastructure component is applied equally to application specific routers (i.e., L7 routers) or application gateways (i.e., in local area networks) but does not hold back and/or prevent a request and does not capture a series of them. The applying of QoS mechanisms to general network traffic does not refer to thresholds or other parameters defined by a QoS rule. The mechanism to refer a flow of a network to a best-fit server describes a routing mechanism with a dynamic definition of a best-fit server but does not refer to any usage of a QoS rule to be applied at a component level to collect/reject/transmit communications. Lastly, the definition of routing policies based on QoS constraints does not refer to a state of a transmission and/or its possible rejection.